There are software applications which match individuals based on the preferences of the individuals. These applications may include carpooling applications, where individuals are grouped into a carpool based on various preferences. The preferences may include the route, time of transport, etc. Another example is an application to group individuals for a book club based on preferences such as book genre, and location of the book club. In order to perform operations for matching individuals based on preferences, an application may logically organize the information about individuals and their associated preferences into data structures, which may be called intent objects, and other data structures to match the intent objects based on preferences, and these data structures may be called matcher objects. Based on matching performed by the matcher objects, intent objects may be grouped into different groups.
When an application matches individuals, there are certain constraints which are imposed. For example, a carpooling application may not assign an individual to two different car pools at the same point in time. In other words, an application may not put the same intent into two different groups. In order to operate within such constraints, an application may process intent objects in a serial fashion, so that only one individual's preferences are analyzed at a time. However, serial processing may be problematic when the number of individuals and preferences to be processed are high, which may limit the scaling capabilities of the application. In addition, serial processing may not effectively utilize the features of computer hardware such as multiple processors and processors with multiple cores. Therefore, there is a need for processing intent objects in parallel to effectively analyze individuals' preferences.